package com.efast.dmom.mgmt.service.les;

import org.apache.ibatis.annotations.Param;

import com.efast.dmom.mgmt.bean.les.DpathWindowTimeBean;
import com.efast.dmom.mgmt.bean.les.InventoryQuantityBean;
import com.efast.dmom.mgmt.bean.les.TwInvPalMriJobBean;
import com.efast.dmom.mgmt.bean.les.WindowReplenishmentBean;
import com.efast.dmom.mgmt.entity.les.TwBasDpathWindowTime;

import java.util.List;

/**
 * @author chlp
 */
public interface TwBasDpathWindowTimeService {

	/**
	 * 插入TwBasDpathWindowTime中属性值不为null的数据到数据库
	 * 
	 * @param value
	 *            value
	 * @return 0
	 */
	int insertNonEmptyTwBasDpathWindowTime(TwBasDpathWindowTime value);

	/**
	 * 查询补货路径的窗口时间
	 *
	 * @return List<DpathWindowTimeBean>
	 */
	List<DpathWindowTimeBean> queryWindowTime();

	/**
	 * 查询补货路径是否今天已经生成了窗口时间
	 *
	 * @return List<DpathWindowTimeBean>
	 */
	TwBasDpathWindowTime queryTwBasDpathWindowTime();

	/**
	 * 查询所有的补货路径
	 *
	 * @return List<DpathWindowTimeBean>
	 */
	List<Integer> queryReplenishmentPath();

	/**
	 * 窗口补货-按库存消耗 1：首先把按照补货路径分组，找出每个补货路径满足的【当前时间>=窗口时间】的记录
	 * 
	 * @return List<WindowReplenishmentBean>
	 */
	List<WindowReplenishmentBean> queryWindowReplenishment();

	/**
	 * 查询补货路径的窗口时间
	 *
	 * @param pathId
	 *            路径id
	 * @return List<InventoryQuantityBean>
	 */
	List<InventoryQuantityBean> queryInventoryQuantityByDpathId(@Param(value = "pathId") int pathId);

	/**
	 *
	 * 查询 前面未完成的补货数量(要求补货数量-实际补货数量)
	 *
	 * @param locId
	 *            库位id
	 * @param supplNo
	 *            供应商号
	 * @param partNoVersion
	 *            零件号
	 * @return 1
	 */
	TwInvPalMriJobBean queryNotQuantityOfReplenishment(@Param(value = "locId") int locId,
			@Param(value = "supplNo") String supplNo, @Param(value = "partNoVersion") String partNoVersion);

	/**
	 * 查询 前面未完成的 实际补货数量 如果是null,则表面没有补货过
	 *
	 * @param locId
	 *            库位id
	 * @param supplNo
	 *            供应商
	 * @param partNoVersion
	 *            零件号
	 * @return Integer
	 */
	Integer queryActRepQty(@Param(value = "locId") int locId, @Param(value = "supplNo") String supplNo,
			@Param(value = "partNoVersion") String partNoVersion);

}